package com.gjl.wechat.service.dto.applet;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AppletSchemeReq {

    @JSONField(name = "jump_wxa")
    private JumpWxa jumpWxa;


    /**
     * 必须为true，现在不可生成长期有效的
     */
    @JSONField(name = "is_expire")
    @Builder.Default
    private boolean isExpire = true;

    @JSONField(name = "expire_type")
    @Builder.Default
    private int expireType = 1;

    /**
     * 到期失效的 scheme 码的失效间隔天数。生成的到期失效 scheme 码在该间隔时间到达前有效。
     * 最长间隔天数为365天。is_expire 为 true 且 expire_type 为 1 时必填
     */
    @JSONField(name = "expire_interval")
    @Builder.Default
    private int expireInterval = 29;

    /**
     * 跳转到的目标小程序信息
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class JumpWxa {

        /**
         * 通过 scheme 码进入的小程序页面路径，必须是已经发布的小程序存在的页面，不可携带 query。path 为空时会跳转小程序主页。
         * 非必填
         */
        private String path;

        /**
         * 通过 scheme 码进入小程序时的 query，最大1024个字符，只支持数字，大小写英文以及部分特殊字符：`!#$&'()*+,/:;=?@-._~%``
         * 非必填
         */
        private String query;

        /**
         * 默认值"release"。要打开的小程序版本。正式版为"release"，体验版为"trial"，开发版为"develop"，仅在微信外打开时生效。
         * 非必填
         */
        @JSONField(name = "env_version")
        private String envVersion;
    }

}
